// 处理如何分配用户到某connectors服务器

class Handler {
  constructor(app) {
    this.app = app
  }

  /**
   * 将用户分配到connectors服务器
   * 
   * @param {Object} msg 从客户端来的信息
   * @param {Object} session 长连接的抽象对象
   * @param {Function} next 进行下一步的回调
   */
  queryEntry(msg, session, next) {
    // 检验uid参数
    const uid = msg.uid // 获得用户id
    if (!uid) { // 若参数中无uid返回错误代码
      next(null, {
        code: 500
      })
      return // 中断下面的代码
    }

    // 检验connectors参数
    const connectors = this.app.getServersByType('connector') // 获取所有connector服务器信
    if (!connectors || connectors.length === 0) { // 无服务器返回错误代码
      next(null, {
        code: 500
      })
      return // 中断
    }
    
    // 为当前用户反回经过运算得出的服务器信息
    const res = connectors[0]
    next(null, {
      code: 200,
      host: res.host,
      port: res.clientPort
    })
  }
}

module.exports = app => {
  return new Handler(app)
}